import { IsArray, IsEmail, IsNotEmpty, IsOptional, IsString, ValidateNested } from 'class-validator';
import { Type } from 'class-transformer';

export class TemplateParamDto {
  @IsString()
  @IsNotEmpty()
  Key: string;

  @IsString()
  @IsNotEmpty()
  Value: string;
}

export class SendTemplateEmailDto {
  @IsArray()
  @IsEmail({}, { each: true })
  @IsNotEmpty({ message: '收件人邮箱不能为空' })
  to: string[];

  @IsString()
  @IsNotEmpty({ message: '邮件主题不能为空' })
  subject: string;

  @IsArray()
  @ValidateNested({ each: true })
  @Type(() => TemplateParamDto) // 嵌套对象校验
  @IsNotEmpty({ message: '模板参数不能为空' })
  templateParams: TemplateParamDto[];

  @IsString()
  @IsOptional()
  templateId?: string; // 可选，未传则使用环境变量默认值
}